﻿//-----------------------------------------------------------------------
// <copyright file="Delegate.cs" company="VSSD">
//     Copyright (c) VietName Securities Software Development (VSSD).  All rights reserved.
// </copyright>
//-----------------------------------------------------------------------

namespace Lapas.Common
{
    using System;
    using System.Collections.Generic;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;    

    /// <summary>
    /// Delegate thiết lập text cho ToolStripLabel
    /// </summary>
    /// <param name="toolStripLabel">Đối tượng ToolStripLabel</param>
    /// <param name="text">Giá trị của text</param>
    public delegate void ToolStripLabelSetTextDelegate(ToolStripLabel toolStripLabel, string text);

    /// <summary>
    /// Dlegate thiết lập enable cho ToolStripItem
    /// </summary>
    /// <param name="toolStripItem">Đối tượng ToolStripItem</param>
    /// <param name="enable">Có enable hay không?</param>
    public delegate void ToolStripItemEnableDelegate(ToolStripItem toolStripItem, bool enable);

    /// <summary>
    /// Delegate thiết lập visible cho ToolStripItem
    /// </summary>
    /// <param name="toolStripItem">Đối tượng toolStripItem</param>
    /// <param name="visible">Có visible hay không?</param>
    public delegate void ToolStripItemVisibleDelegate(ToolStripItem toolStripItem, bool visible);

    #region Control
    /// <summary>
    /// Delegate thiết lập control hiển thị hay không hiển thị
    /// </summary>
    /// <param name="control">Đối tượng control</param>
    /// <param name="visible">Hiển thị hoặc không hiển thị</param>
    public delegate void ControlVisibleDelegate(Control control, bool visible);

    /// <summary>
    /// Delegate thiết lập control được enable hay không enable
    /// </summary>
    /// <param name="control">Đối tượng control</param>
    /// <param name="enabled">Hiển thị hoặc không hiển thị</param>
    public delegate void ControlEnableDelegate(Control control, bool enabled);

    /// <summary>
    /// Delegate thiết lập text cho control 
    /// </summary>
    /// <param name="control">Đối tượng control</param>
    /// <param name="text">Giá trị text</param>
    public delegate void SetTextControlDelegate(Control control, string text);
    #endregion

    /// <summary>
    /// Delegate thiết lập ảnh cho PictureBox
    /// </summary>
    /// <param name="pictureBox">Control Picture Box</param>
    /// <param name="image">Đối tượng ảnh</param>
    public delegate void PictureBoxImageDelegate(PictureBox pictureBox, Image image);

    /// <summary>
    /// Lớp định nghĩa các method liên quan đến delegate
    /// </summary>
    public sealed class CommonDelegate
    {
        /// <summary>
        /// Thiết lập text cho ToolStripLabel
        /// </summary>
        /// <param name="toolStripLabel">Đối tượng ToolStripLabel</param>
        /// <param name="text">Giá trị của text</param>
        public static void ToolStripLabelSetTextMethod(ToolStripLabel toolStripLabel, string text)
        {
            toolStripLabel.Text = text;
        }

        public static void ToolStripItemVisibleMethod(ToolStripItem item, bool visible)
        {
            item.Visible = visible;
        }

        /// <summary>
        /// Hàm thực hiện delegate tương ứng với PictureBoxImageDelegate(PictureBox pictureBox, Image image);
        /// </summary>
        /// <param name="pictureBox">Đối tượng PictureBox</param>
        /// <param name="image">Đối tượng ảnh truyền vào</param>
        public static void PictureBoxImageMethod(PictureBox pictureBox, Image image)
        {
            pictureBox.Image = image;
        }

        public static void ToolStripItemEnableMethod(ToolStripItem toolStripItem, bool enable)
        {
            toolStripItem.Enabled = enable;
        }

        #region Control

        /// <summary>
        /// Hàm thực hiện delegate tương ứng với ControlVisibleDelegate(Control control, bool visible)
        /// </summary>
        /// <param name="control">Đối tượng control</param>
        /// <param name="visible">Hiển thị hoặc không hiển thị</param>
        public static void ControlVisbleMethod(Control control, bool visible)
        {
            control.Visible = visible;
        }
        
        /// <summary>
        /// Delegate thiết lập control được enable hay không enable
        /// </summary>
        /// <param name="control">Đối tượng control</param>
        /// <param name="enabled">Hiển thị hoặc không hiển thị</param>
        public static void ControlEnableMethod(Control control, bool enabled)
        {
            control.Enabled = enabled;
        }

        /// <summary>
        /// Delegate thiết lập text cho control 
        /// </summary>
        /// <param name="control">Đối tượng control</param>
        /// <param name="text">Giá trị text</param>
        public static void SetTextControlMethod(Control control, string text)
        {
            control.Text = text;
        }
        #endregion
    }
}
